package com.hiedu.commons;
import lombok.Data;
/**
 * @ProjectName: hi-app
 * @Titile: R
 * @Author: Lucky
 * @Description: 统一返回类型
 */
@Data
public class R<T> {
    /*状态码*/
    private Integer code;
    /*消息*/
    private String message;
    /*携带的数据*/
    private T  data;
    /**
     4. 异常统一处理
     整个业务需要进行统一的异常处理，这些异常可能是业务异常，也有可能是其他的异常。
     * 操作成功，不携带数据
     */
    public static R<Void> ok(String message){
        //创建 R 对象
        R<Void> r = new R<>();
        r.setCode(ServiceCode.OK.getCode());
        r.setMessage(message);
        return r;
    }
    /**
     * 操作成功，携带数据
     */
    public static <T> R<T> ok(String message,T data){
        //创建 R 对象
        R<T> r = new R<>();
        r.setCode(ServiceCode.OK.getCode());
        r.setMessage(message);
        r.setData(data);
        return r;
    }
    /**
     * 操作失败
     */
    public static R<Void> fail(ServiceException e){
        R<Void> r = new R<>();
        r.setCode(e.getServiceCode().getCode());
        r.setMessage(e.getMessage());
        return r;
    }
}